home *** CD-ROM | disk | FTP | other *** search
/ CD Actual 22 / PC Actual CD 22.iso / progs / Netobj / CDK / NetObjectsFusionCDK5_97.exe / _SETUP.1 / BBSComp.java < prev    next >
Encoding:
Java Source  |  1997-05-14  |  16.2 KB  |  399 lines

  1. import ComponentApp;
  2.  
  3. public class BBSComp extends ComponentApp
  4. {
  5.     DAssetManager cam;                                                               
  6.     DDrawPicture cdp; 
  7.     int             idScript;
  8.     String Subdirectory;
  9.     String Title;
  10.     String UnixWindows;
  11.     String PerlPath;
  12.     boolean AdminTool;
  13.     String codeBase;
  14.  
  15.     
  16.     static int onlyYou = 0;
  17.     int onlyYouInvalid = 0;
  18.     static final int MAXASSET=50;
  19.     boolean published = false;
  20.  
  21.     int assetControl[];
  22.     int assetCount = 0;
  23.     int tAssetCount = 0;
  24.     
  25.     public String onInstall(DAssetManager asm, String codeBaseOut) 
  26.     {
  27.  
  28.         cam = asm;
  29.         codeBase = codeBaseOut;
  30.         return "BBS";
  31.  
  32.     }
  33.     public void onInspect(CStringArray Names,CStringArray Types)
  34.     { 
  35.         if (onlyYouInvalid == 1){ return;}
  36.  
  37.         Names.Set("Subdirectory");
  38.         Types.Set(typeString);
  39.         Names.Set("Page Title");
  40.         Types.Set(typeString);
  41.         Names.Set("Publish to");
  42.         Types.Set("Set(Windows|Unix|Mac)");
  43. //        Types.Set("Set(Windows|Unix)");
  44.         Names.Set("Perl Path for Unix");
  45.         Types.Set(typeString);
  46. //        Names.Set("Admin Tool for Unix");
  47. //        Types.Set("Set(No|Yes)");
  48.         
  49.  
  50.               
  51.     }
  52.  
  53.  
  54.     public String PropertyListener(String Event,String Value,int Get, int propIndex, IDInspector insp) 
  55.     {
  56.         if (Get == 1)
  57.         {
  58.             if (Event.compareTo("Subdirectory") == 0)
  59.             {
  60.                 return Subdirectory;
  61.             }
  62.             else if (Event.compareTo("Page Title") == 0)
  63. //             if (Event.compareTo("Page Title") == 0)
  64.             {
  65.                 return Title;
  66.             }
  67.             else if (Event.compareTo("Publish to") == 0)
  68.             {
  69.                 if(UnixWindows.compareTo("Windows") ==0)
  70.                     return "0";      //1
  71.                 else if (UnixWindows.compareTo("Unix") == 0)
  72.                     return "1";//0
  73.                 else if (UnixWindows.compareTo("Mac") == 0)
  74.                     return "2";        //Mac
  75.             }
  76.             else if (Event.compareTo("Perl Path for Unix") == 0)
  77.             {
  78.                 return PerlPath;
  79.             }
  80. /*            else if (Event.compareTo("Admin Tool for Unix") == 0)
  81.             {
  82.                 if(AdminTool==false)
  83.                     return "1";
  84.                 else
  85.                     return "0";
  86.                 
  87.             }
  88. */
  89.         }
  90.         else
  91.         {
  92.             if (Event.compareTo("Subdirectory") == 0)
  93.             {
  94.                 Subdirectory = Value;
  95.                 
  96.             }
  97.             else if (Event.compareTo("Page Title") == 0)
  98. //            if (Event.compareTo("Page Title") == 0)
  99.             {
  100.                 Title = Value;
  101.             }
  102.             else if (Event.compareTo("Publish to") == 0)
  103.             {
  104. //                if(Value.compareTo("0")==0)
  105. //                    UnixWindows=true;
  106.                 //to window
  107. //                else
  108. //                    UnixWindows=false;
  109.                 //to unix
  110.         
  111.                 if (Value.compareTo("0") == 0)
  112.                     UnixWindows = "Windows";
  113.                 else if (Value.compareTo("1") == 0)
  114.                     UnixWindows = "Unix";
  115.                 else
  116.                     UnixWindows = "Mac";
  117.             }
  118.             else if (Event.compareTo("Perl Path for Unix") == 0)
  119.             {
  120.                 PerlPath = Value;
  121.             }
  122. /*            else if (Event.compareTo("Admin Tool for Unix") == 0)
  123.             {
  124.                 if(Value.compareTo("0")==0)
  125.                     AdminTool=true;
  126.                 //to no
  127.                  else
  128.                     AdminTool=false;
  129.                 //to yes
  130.             }
  131. */    
  132.             cdp.setHTMLBefore("<a href=\"#\" target=_self onclick=\'launchBBS(\""+Subdirectory+"\",\""+Title+"\")\'>");
  133.             cdp.setHTMLAfter("</a>");
  134.             //this.generateFile();
  135.             
  136.         }
  137.         return "";
  138.     }
  139.  
  140. public void onCopy()
  141.     {
  142.     
  143.         Subdirectory = new String(Subdirectory);
  144.         Title  = new String(Title);                              
  145.         PerlPath  = new String(PerlPath); 
  146.         codeBase = new String(codeBase);
  147.  
  148.         //
  149.         // DS 1/27/97, need to allocate instance array and copy
  150.         //    script asset
  151.         //
  152.         cam.CopyAsset(idScript);
  153.  
  154.         int newAssetControl[];
  155.         newAssetControl = new int [MAXASSET]; 
  156.         for(tAssetCount = 0; tAssetCount < assetCount; tAssetCount++){
  157.             cam.CopyAsset(assetControl[tAssetCount]);
  158.             newAssetControl[tAssetCount] = assetControl[tAssetCount];
  159.         }
  160.         assetControl = newAssetControl;
  161.         // DS 1/27/97
  162.     }
  163.  
  164.     // DS fix 1/27/97: functions for error checking
  165.     boolean CheckTwoInstancesError() {
  166.         if (onlyYou == 1) {
  167.             DMessageBox message=new DMessageBox();
  168.             message.Warnning("Only one BBS Component is allowed per NOD file. Please delete the extra BBS Components.");
  169.             onlyYouInvalid = 1;
  170.             return true;
  171.         }
  172.         return false;
  173.     }
  174.  
  175.     void OnDropOK() {
  176.         cam.InsertScript("bbs_script_layout", this.getJavaScript());
  177.         onlyYou = 1;
  178.     }
  179.     // DS fix 1/27/97: 
  180.  
  181. public void onDrop(IDLayout layout, IDRect r, int fDrop) 
  182.     {
  183.     if (fDrop == ActivateState.Drop)
  184.     {
  185.         //
  186.         // DS fix 1/27/97: Don't allow more than one instace, use message box to warn user
  187.         //
  188.         if (CheckTwoInstancesError()){
  189.             return;
  190.         }
  191.         // DS fix 1/27/97: Don't allow more than one instace, use message box to warn user
  192.  
  193.         assetControl = new int [MAXASSET];
  194.         for (int tCount = 0; tCount < MAXASSET; tCount++){
  195.             assetControl[tCount] = 0;
  196.         }
  197.  
  198.         String FusionPath = codeBase;
  199.     
  200.         Subdirectory="bbs";
  201.         Title="NetObjects BBS";
  202.         UnixWindows="Windows";
  203.         AdminTool=true;
  204.  
  205.         PerlPath="/usr/local/bin/perl";
  206.         cdp = new DDrawPicture();
  207.  
  208.         DImage imageSizer=new DImage();
  209.         imageSizer.setImageFile(FusionPath+"bbs\\image\\BBSComp.gif");
  210.         IDSize currentImageSize=imageSizer.getSize();
  211.  
  212.         cdp.setImageFile(FusionPath+"bbs\\image\\BBSComp.gif");
  213.         cdp.SetPositionRect(r.getLeft(), r.getTop(), r.getLeft()+currentImageSize.getWidth(), r.getTop()+currentImageSize.getHeight());
  214.         cdp.setStretch(PictureStretchMode.DRAW_NATURAL);
  215.             
  216.         idScript = cam.AddAsset("bbs_script_layout", IAssetType.JavaScript,"");
  217.         layout.AddObject(cdp);
  218.         // DS fix 1/27/97: Set this instance as valid instance
  219.         OnDropOK();
  220.         // DS fix 1/27/97: Set this instance as valid instance
  221.  
  222.     }
  223.     else if(fDrop == ActivateState.Paste){
  224.         // DS fix 1/27/97: Don't allow more than one instace, use message box to warn user
  225.         if ( CheckTwoInstancesError() ){
  226.             return;
  227.         }
  228.         // DS fix 1/27/97: Set this instance as valid instance
  229.         OnDropOK();
  230.         // DS fix 1/27/97: Set this instance as valid instance
  231.     } 
  232.    }
  233.     
  234.     protected void finalize(){
  235.         cam.RemoveAsset(idScript);
  236.         if (published == true){
  237.           for(assetCount = 0; assetCount < MAXASSET; assetCount++){
  238.                  cam.RemoveAsset(assetControl[assetCount]);
  239.           }
  240.         }
  241.         //
  242.         // DS fix 1/27/97: if this is a valid instance, reset flag to zero so
  243.         // sebsequent drop will not fail
  244.         //
  245.         if ( onlyYouInvalid == 0)
  246.             onlyYou = 0;
  247.         // DS fix 1/27/97: if this is a valid instance, reset flag to zero so
  248.     }
  249.  
  250.     public void onPublish(DAssetManager asm, int context)
  251.     {
  252.         
  253.  
  254.         cdp.setHTMLBefore("<a href=\"#\" target=_self onclick=\'launchBBS(\""+Subdirectory+"\",\""+Title+"\")\'>");
  255.         cdp.setHTMLAfter("</a>");
  256.         String sepChar;
  257.         String FusionPath = codeBase;
  258.         DFile temp = new DFile();
  259.         sepChar = temp.GetPathChar();
  260.         // need to add config, and submit-bbs-message.cgi
  261.         // figure out the how to get the system to copy the bbs file from? 
  262.         //../../SmartObjects/bbs/bbs-control.html?
  263.  
  264.         if (published == true){
  265.           for(assetCount = 0; assetCount < MAXASSET; assetCount++){
  266.                  cam.RemoveAsset(assetControl[assetCount]);
  267.           }
  268.  
  269.         }
  270.         assetCount = 0;
  271.     
  272.         published = true;
  273.        
  274.  
  275.         assetControl[assetCount] = cam.AddAsset(FusionPath+"bbs" + sepChar + "bbs-control.html", IAssetType.HTML, Subdirectory);
  276.         assetControl[++assetCount] = cam.AddAsset(FusionPath+"bbs" + sepChar + "bbs-message.html", IAssetType.HTML, Subdirectory);
  277.         assetControl[++assetCount] = cam.AddAsset(FusionPath+"bbs" + sepChar + "blank.html", IAssetType.HTML, Subdirectory);
  278.         assetControl[++assetCount] = cam.AddAsset(FusionPath+"bbs" + sepChar + "index.html", IAssetType.HTML, Subdirectory);
  279.      
  280.         assetControl[++assetCount] = cam.AddAsset(FusionPath+"bbs" + sepChar + "image" + sepChar + "dot24_clear.gif", IAssetType.Image, Subdirectory + sepChar + "image");
  281.         assetControl[++assetCount] = cam.AddAsset(FusionPath+"bbs" + sepChar + "image" + sepChar + "background.gif", IAssetType.Image, Subdirectory + sepChar + "image");
  282.         assetControl[++assetCount] = cam.AddAsset(FusionPath+"bbs" + sepChar + "image" + sepChar + "clear.gif", IAssetType.Image, Subdirectory + sepChar + "image");
  283.         assetControl[++assetCount] = cam.AddAsset(FusionPath+"bbs" + sepChar + "image" + sepChar + "expand.gif", IAssetType.Image, Subdirectory + sepChar + "image");
  284.         assetControl[++assetCount] = cam.AddAsset(FusionPath+"bbs" + sepChar + "image" + sepChar + "listby.gif", IAssetType.Image, Subdirectory + sepChar + "image");
  285.         assetControl[++assetCount] = cam.AddAsset(FusionPath+"bbs" + sepChar + "image" + sepChar + "newmessage.gif", IAssetType.Image, Subdirectory + sepChar + "image");
  286.         assetControl[++assetCount] = cam.AddAsset(FusionPath+"bbs" + sepChar + "image" + sepChar + "next.gif", IAssetType.Image, Subdirectory + sepChar + "image");
  287.         assetControl[++assetCount] = cam.AddAsset(FusionPath+"bbs" + sepChar + "image" + sepChar + "previous.gif", IAssetType.Image, Subdirectory + sepChar + "image");
  288.         assetControl[++assetCount] = cam.AddAsset(FusionPath+"bbs" + sepChar + "image" + sepChar + "reload.gif", IAssetType.Image, Subdirectory + sepChar + "image");
  289.         assetControl[++assetCount] = cam.AddAsset(FusionPath+"bbs" + sepChar + "image" + sepChar + "reply.gif", IAssetType.Image, Subdirectory + sepChar + "image");
  290.  
  291.         assetControl[++assetCount] = cam.AddAsset(FusionPath+"bbs" + sepChar + "html" + sepChar + "error-char.html",IAssetType.HTML,Subdirectory + sepChar + "html");
  292.         assetControl[++assetCount] = cam.AddAsset(FusionPath+"bbs" + sepChar + "html" + sepChar + "error.html",IAssetType.HTML, Subdirectory + sepChar + "html");
  293.         assetControl[++assetCount] = cam.AddAsset(FusionPath+"bbs" + sepChar + "html" + sepChar + "success.html",IAssetType.HTML, Subdirectory + sepChar + "html");
  294.         assetControl[++assetCount] = cam.AddAsset(FusionPath+"bbs" + sepChar + "html" + sepChar + "url-only-char.html",IAssetType.HTML,Subdirectory + sepChar + "html");
  295.         assetControl[++assetCount] = cam.AddAsset(FusionPath+"bbs" + sepChar + "html" + sepChar + "urlreply.html",IAssetType.HTML,Subdirectory + sepChar + "html");
  296.      
  297.         assetControl[++assetCount] = cam.AddAsset(FusionPath+"bbs" + sepChar + "message" + sepChar + "bbs-data.original",IAssetType.HTML,Subdirectory + sepChar + "message");
  298.         cam.SetPublishAssetMode(assetControl[assetCount], 0704);
  299.         assetControl[++assetCount] = cam.AddAsset(FusionPath+"bbs" + sepChar + "message" + sepChar + "zero.counter",IAssetType.HTML,Subdirectory + sepChar + "message");
  300.         cam.SetPublishAssetMode(assetControl[assetCount], 0704);
  301.         assetControl[++assetCount] = cam.AddAsset(Subdirectory+"" + sepChar + "message" + sepChar + "",IAssetType.SubDir, "");
  302.         cam.SetPublishAssetMode(assetControl[assetCount], 0707); 
  303.  
  304.     
  305.         
  306.  
  307.  
  308.  
  309.     
  310.  
  311.         if(UnixWindows.compareTo("Windows") == 0){
  312.              //Window version 
  313.             assetControl[++assetCount] = cam.AddAsset(FusionPath+"bbs" + sepChar + "cgi-bin-NT" + sepChar + "bbs-submit.cgi", IAssetType.CGI,Subdirectory + sepChar + "cgi-bin");
  314.             cam.SetPublishAssetMode(assetControl[assetCount], 0705);
  315.             assetControl[++assetCount] = cam.AddAsset(FusionPath+"bbs" + sepChar + "cgi-bin-NT" + sepChar + "submit-bbs-form.cgi", IAssetType.CGI,Subdirectory + sepChar + "cgi-bin");
  316.             cam.SetPublishAssetMode(assetControl[assetCount], 0705);
  317.             assetControl[++assetCount] = cam.AddAsset(FusionPath+"bbs" + sepChar + "cgi-bin-NT" + sepChar + "Buf.dll", IAssetType.CGI,Subdirectory + sepChar + "cgi-bin");
  318.             cam.SetPublishAssetMode(assetControl[assetCount], 0705);
  319.  
  320.  
  321.  
  322.         } 
  323.         else if(UnixWindows.compareTo("Mac") == 0){
  324.              //Mac version 
  325.             assetControl[++assetCount] = cam.AddAsset(FusionPath+"bbs" + sepChar + "cgi-bin-mac" + sepChar + "bbs-submit.cgi", IAssetType.CGI,Subdirectory + sepChar + "cgi-bin");
  326.             cam.SetPublishAssetMode(assetControl[assetCount], 0705);
  327.             assetControl[++assetCount] = cam.AddAsset(FusionPath+"bbs" + sepChar + "cgi-bin-mac" + sepChar + "submit-bbs-form.cgi", IAssetType.CGI,Subdirectory + sepChar + "cgi-bin");
  328.             cam.SetPublishAssetMode(assetControl[assetCount], 0705);
  329.  
  330.  
  331.  
  332.  
  333.         } 
  334.         else if (UnixWindows.compareTo("Unix") == 0) {
  335.             //Unix Version
  336.             DFile file = new DFile();
  337.             DFile fileFrom = new DFile();
  338.  
  339.             fileFrom.Open(FusionPath+"bbs" + sepChar + "cgi-bin-Unix" + sepChar + "config",FileOpenMode.modeRead);
  340.             file.Open(FusionPath+"bbs" + sepChar + "cgi-bin" + sepChar + "config",FileOpenMode.modeWrite|FileOpenMode.modeCreate);
  341.             file.WriteString("#!"+PerlPath+"\n", -1);
  342.             file.WriteString(fileFrom.ReadString(10000),-1);
  343.             file.Close();
  344.             fileFrom.Close();
  345.  
  346.             fileFrom.Open(FusionPath+"bbs" + sepChar + "cgi-bin-Unix" + sepChar + "submit-bbs-form.cgi",FileOpenMode.modeRead);
  347.             file.Open(FusionPath+"bbs" + sepChar + "cgi-bin" + sepChar + "submit-bbs-form.cgi",FileOpenMode.modeWrite|FileOpenMode.modeCreate);
  348.             file.WriteString("#!"+PerlPath+"\n\n",-1);
  349.             file.WriteString(fileFrom.ReadString(20000),-1);
  350.             file.Close();
  351.             fileFrom.Close();
  352.             
  353.             fileFrom.Open(FusionPath+"bbs" + sepChar + "cgi-bin-Unix" + sepChar + "bbs-submit.cgi",FileOpenMode.modeRead);
  354.             file.Open(FusionPath+"bbs" + sepChar + "cgi-bin" + sepChar + "bbs-submit.cgi", FileOpenMode.modeWrite|FileOpenMode.modeCreate);
  355.             file.WriteString("#!"+PerlPath+"\n", -1);
  356.             file.WriteString(fileFrom.ReadString(20000),-1);
  357.             file.Close();
  358.             fileFrom.Close();
  359.  
  360.             assetControl[++assetCount] = cam.AddAsset(FusionPath+"bbs" + sepChar + "cgi-bin" + sepChar + "bbs-submit.cgi", IAssetType.CGI,Subdirectory + sepChar + "cgi-bin");
  361.             cam.SetPublishAssetMode(assetControl[assetCount], 0705);
  362.             assetControl[++assetCount] = cam.AddAsset(FusionPath+"bbs" + sepChar + "cgi-bin" + sepChar + "config", IAssetType.CGI, Subdirectory + sepChar + "cgi-bin");
  363.             cam.SetPublishAssetMode(assetControl[assetCount], 0705);
  364.             assetControl[++assetCount] = cam.AddAsset(FusionPath+"bbs" + sepChar + "cgi-bin" + sepChar + "submit-bbs-form.cgi", IAssetType.CGI, Subdirectory + sepChar + "cgi-bin");
  365.             cam.SetPublishAssetMode(assetControl[assetCount], 0705);
  366.  
  367.             if(AdminTool == false){
  368.                 //yes give me tool
  369.                 fileFrom.Open(FusionPath+"bbs" + sepChar + "admin-bin-Unix" + sepChar + "deleteMessage.cgi",FileOpenMode.modeRead);
  370.                 file.Open(FusionPath+"bbs" + sepChar + "admin-bin" + sepChar + "deleteMessage.cgi",FileOpenMode.modeWrite|FileOpenMode.modeCreate);
  371.                 file.WriteString("#!"+PerlPath+"\n", -1);
  372.                 file.WriteString(fileFrom.ReadString(10000),-1);
  373.                 file.Close();
  374.                 fileFrom.Close();
  375.  
  376.                 fileFrom.Open(FusionPath+"bbs" + sepChar + "admin-bin-Unix" + sepChar + "resetBBS.cgi",FileOpenMode.modeRead);
  377.                 file.Open(FusionPath+"bbs" + sepChar + "admin-bin" + sepChar + "resetBBS.cgi",FileOpenMode.modeWrite|FileOpenMode.modeCreate);
  378.                 file.WriteString("#!"+PerlPath+"\n\n",-1);
  379.                 file.WriteString(fileFrom.ReadString(20000),-1);
  380.                 file.Close();
  381.                 fileFrom.Close();
  382.  
  383.                 assetControl[++assetCount] = cam.AddAsset(FusionPath+"bbs" + sepChar + "admin-bin" + sepChar + "deleteMessage.cgi", IAssetType.CGI,Subdirectory + sepChar + "admin-bin");
  384.                 cam.SetPublishAssetMode(assetControl[assetCount], 0705);
  385.                 assetControl[++assetCount] = cam.AddAsset(FusionPath+"bbs" + sepChar + "admin-bin" + sepChar + "resetBBS.cgi", IAssetType.CGI, Subdirectory + sepChar + "admin-bin");
  386.                 cam.SetPublishAssetMode(assetControl[assetCount], 0705);
  387.  
  388.             }
  389.  
  390.         }
  391.  
  392.  
  393.     }
  394.  
  395.     private String getJavaScript()
  396.     {
  397.     return  "function newCookie(name, value){\n  document.cookie = name + \"=\" + value +  \"; path=/; domain=\" + location.hostname + \";\";     \n}\nfunction launchBBS(URL,Title){\n      var direct = location.pathname; \n   if((location.pathname.lastIndexOf(\"/\") + 1) == location.pathname.length){    \n      direct = location.pathname;     \n        }       \n      else{    \n      direct = location.pathname.substring(0,location.pathname.lastIndexOf(\"/\")) + \"/\";     \n     }\n if (direct.substring(direct.length - 5, direct.length - 1) == \"html\"){\n   direct = direct.substring(0, direct.length - 6) + \"/\";\n } \n" + "if (location.port.length == 0){\n    NURL= location.protocol+\"//\" + location.hostname + direct  + URL + \"/\";\n }\n     else {\n NURL= location.protocol+\"//\" + location.hostname + \":\" + location.port + direct  + URL + \"/\";\n    } \n var WinName = window.open(NURL+\'index.html\',\'netobjects_bbs\',\'toolbar=0,location=0,directories=0,status=0,menubar=0,scrollbars=0,resizable=1,copyhistory=0,width=800,height=600\');\n if (navigator.appVersion.indexOf(\"(X11\") != -1 ||\n        navigator.appVersion.indexOf(\"(Mac\") != -1)\n      newWin = window.open(NURL+\'index.html\',\'netobjects_bbs\');\nnewCookie(\"URL\",NURL);\nnewCookie(\"Title\",Title);\nnewCookie(\"CgiURL\",NURL+\"cgi-bin\");\nnewCookie(\"GifURL\",NURL+\"image/webforum.gif\");\n} \n"; 
  398.     }
  399. }